package com.jhy.suixianglu.daima20221222;

import java.util.HashSet;

/**
 * 输入：n = 19
 * 输出：true
 * 解释：
 * 12 + 92 = 82
 * 82 + 22 = 68
 * 62 + 82 = 100
 * 12 + 02 + 02 = 1
 *
 *
 * 输入：n = 2
 * 输出：false
 */
public class IsHappy {
    public boolean isHappy(int n) {
        // 声明这个set集合 判断后面是否重复
        HashSet<Integer> set = new HashSet<>();
        // 要求set当中的数据 不包含其中的n 如果有的话 就退出
        while(!set.contains(n) && n != 1 ){
            set.add(n);
            n = getNumber(n);
        }
        return n==1;
    }

    private int getNumber(int n) {
        int res = 0;
        while(n>0){
            // 先将个位取出来
            int ge = n%10;
            res += ge*ge;
            // 接下来就是位数上的乘积了。
            n = n/10;
        }
        return res;
    }
}
